/**
 * Orthanc 连接测试工具
 */
import { orthancService } from '@/services/orthanc.service'
import { exampleDicomInstance } from '@/config/orthanc.config'
import { discoverFirstAvailableInstance, showAvailableInstances } from '@/utils/orthanc-discovery'
import { fullOrthancExploration } from '@/utils/orthanc-api-explorer'

/**
 * 测试 Orthanc 连接和基本功能
 */
export async function testOrthancIntegration() {
  console.log('🔍 开始测试 Orthanc 集成...')
  
  try {
    // 1. 测试连接
    console.log('1️⃣ 测试 Orthanc 连接...')
    const connected = await orthancService.testConnection()
    
    if (!connected) {
      console.error('❌ Orthanc 连接失败')
      return false
    }
    
    console.log('✅ Orthanc 连接成功')
    
    // 2. 测试获取研究列表
    console.log('2️⃣ 测试获取研究列表...')
    try {
      const studies = await orthancService.getStudies()
      console.log(`✅ 获取到 ${studies.length} 个研究`)
    } catch (error) {
      console.warn('⚠️ 获取研究列表失败:', error)
    }
    
    // 3. 验证示例 DICOM 实例是否存在
    console.log('3️⃣ 验证示例 DICOM 实例是否存在...')
    const instanceExists = await orthancService.verifyInstanceExists(exampleDicomInstance)
    
    if (!instanceExists) {
      console.warn('⚠️ 示例 DICOM 实例不存在，开始完整探索...')
      
      // 使用完整的API探索来找到可用的实例
      const discoveredConfig = await fullOrthancExploration()
      
      if (discoveredConfig) {
        console.log('🎯 找到可用的配置，建议更新配置文件!')
        return true
      } else {
        console.log('❌ 没有找到任何可用的DICOM数据')
        return false
      }
    }

    // 4. 测试加载示例 DICOM 实例
    console.log('4️⃣ 测试加载示例 DICOM 实例...')
    try {
      const [imageBlob, metadata] = await Promise.all([
        orthancService.getDicomImage(exampleDicomInstance),
        orthancService.getDicomMetadata(exampleDicomInstance)
      ])
      
      console.log('✅ DICOM 图像加载成功:', {
        imageSize: imageBlob.size,
        imageType: imageBlob.type,
        metadata: {
          patientID: metadata.patientID,
          studyDate: metadata.studyDate,
          modality: metadata.modality,
          dimensions: `${metadata.imageWidth}x${metadata.imageHeight}`
        }
      })
      
      return true
    } catch (error) {
      console.error('❌ 加载示例 DICOM 实例失败:', error)
      console.info('💡 请确保 Orthanc 中存在以下实例:')
      console.info('   Study UID:', exampleDicomInstance.studyInstanceUID)
      console.info('   Series UID:', exampleDicomInstance.seriesInstanceUID)
      console.info('   Instance UID:', exampleDicomInstance.sopInstanceUID)
      return false
    }
    
  } catch (error) {
    console.error('❌ Orthanc 集成测试失败:', error)
    return false
  }
}

/**
 * 验证 DICOM-Web URL 构建
 */
export function validateDicomWebUrls() {
  console.log('🔍 验证 DICOM-Web URL 构建...')
  
  const { buildInstanceUrl } = require('@/config/orthanc.config')
  
  // 测试实例 URL
  const instanceUrl = buildInstanceUrl(exampleDicomInstance)
  console.log('📋 实例 URL:', instanceUrl)
  
  // 验证 URL 格式
  const expectedPattern = /^http:\/\/localhost:8042\/dicom-web\/studies\/.+\/series\/.+\/instances\/.+\/frames\/\d+$/
  const isValid = expectedPattern.test(instanceUrl)
  
  if (isValid) {
    console.log('✅ URL 格式验证通过')
  } else {
    console.error('❌ URL 格式验证失败')
  }
  
  return isValid
}

/**
 * 在浏览器控制台中运行测试
 */
if (typeof window !== 'undefined') {
  // 将测试函数暴露到全局作用域，方便在控制台调试
  (window as any).testOrthancIntegration = testOrthancIntegration
  (window as any).validateDicomWebUrls = validateDicomWebUrls
}
